Java Time Package (java.time প্যাকেজ) হল Java 8 এর একটি শক্তিশালী date and time API, যা java.util.Date, java.util.Calendar, এবং java.lang প্যাকেজের ক্লাসের তুলনায় অনেক বেশি নির্ভুল, সহজ এবং শক্তিশালী। তবে, এটি এককভাবে কাজ করার জন্য ডিজাইন করা হয়নি; এটি অন্যান্য Java প্যাকেজ এর সাথে ইন্টিগ্রেটেড হয়ে কাজ করতে পারে।
এখানে আমরা আলোচনা করবো java.time প্যাকেজ এবং অন্যান্য প্যাকেজ (যেমন java.util, java.lang) এর মধ্যে ইন্টিগ্রেশন টেকনিক্স নিয়ে কিছু উদাহরণ। আমরা দেখবো কীভাবে java.util.Date, java.util.Calendar, এবং java.lang প্যাকেজের ক্লাসগুলির সাথে java.time এর ক্লাসগুলোকে ইন্টিগ্রেটেড ব্যবহার করা যায়।
1. java.time এবং java.util.Date এর মধ্যে ইন্টিগ্রেশন
java.util.Date একটি পুরানো API ক্লাস, যা java.time এর সাথে ইন্টিগ্রেট করা যেতে পারে। এখানে, আমরা java.util.Date কে LocalDateTime বা Instant তে রূপান্তর এবং উল্টো কাজ দেখাবো।
Example 1: java.util.Date to LocalDateTime
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDateTime {
public static void main(String[] args) {
// Create a java.util.Date object
Date date = new Date();
// Convert java.util.Date to LocalDateTime
LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("java.util.Date: " + date);
System.out.println("Converted LocalDateTime: " + localDateTime);
}
}
Output:
java.util.Date: Fri Dec 23 17:30:00 IST 2024
Converted LocalDateTime: 2024-12-23T17:30:00.123
ব্যাখ্যা:
date.toInstant(): এটিjava.util.DateকেInstantতে রূপান্তরিত করে।atZone(ZoneId.systemDefault()): এটি স্থানীয় সময় অঞ্চলের সাথেInstantকেZonedDateTimeএ রূপান্তর করে।toLocalDateTime(): এটিZonedDateTimeথেকেLocalDateTimeএ রূপান্তর করে।
2. java.time এবং java.util.Calendar এর মধ্যে ইন্টিগ্রেশন
java.util.Calendar এবং java.time.LocalDateTime বা ZonedDateTime এর মধ্যে রূপান্তর করা যেতে পারে। আমরা এখানে দেখবো Calendar কে LocalDateTime তে রূপান্তর এবং উল্টো কাজ।
Example 2: java.util.Calendar to LocalDateTime
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
public class CalendarToLocalDateTime {
public static void main(String[] args) {
// Create a java.util.Calendar object
Calendar calendar = Calendar.getInstance();
// Convert java.util.Calendar to LocalDateTime
LocalDateTime localDateTime = calendar.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("java.util.Calendar: " + calendar.getTime());
System.out.println("Converted LocalDateTime: " + localDateTime);
}
}
Output:
java.util.Calendar: Fri Dec 23 17:30:00 IST 2024
Converted LocalDateTime: 2024-12-23T17:30:00.123
ব্যাখ্যা:
calendar.toInstant(): এটিCalendarকেInstantতে রূপান্তরিত করে।atZone(ZoneId.systemDefault()): এটি স্থানীয় সময় অঞ্চলের সাথেInstantকেZonedDateTimeএ রূপান্তর করে।toLocalDateTime(): এটিZonedDateTimeথেকেLocalDateTimeএ রূপান্তর করে।
3. java.time এবং java.lang এর মধ্যে ইন্টিগ্রেশন
java.lang প্যাকেজে System.currentTimeMillis() এবং Thread.sleep() এর মাধ্যমে java.time.Instant বা LocalDateTime এর সাথে ইন্টিগ্রেট করা যেতে পারে।
Example 3: System.currentTimeMillis() to Instant
import java.time.Instant;
public class CurrentTimeMillisToInstant {
public static void main(String[] args) {
// Get the current time in milliseconds from epoch
long currentTimeMillis = System.currentTimeMillis();
// Convert current time in milliseconds to Instant
Instant instant = Instant.ofEpochMilli(currentTimeMillis);
System.out.println("Current Time in milliseconds: " + currentTimeMillis);
System.out.println("Converted Instant: " + instant);
}
}
Output:
Current Time in milliseconds: 1630283136700
Converted Instant: 2024-12-23T17:30:36.700Z
ব্যাখ্যা:
System.currentTimeMillis(): এটি মিলিসেকেন্ডে বর্তমান সময় ফেরত দেয়।Instant.ofEpochMilli(currentTimeMillis): এটি মিলিসেকেন্ডে বর্তমান সময়কেInstantতে রূপান্তর করে।
4. java.time এবং Thread.sleep() এর মধ্যে ইন্টিগ্রেশন
Thread.sleep() পদ্ধতিটি থ্রেডকে কিছু সময়ের জন্য বিরত রাখার জন্য ব্যবহৃত হয়। আপনি java.time.Duration ব্যবহার করে নির্দিষ্ট সময়ের জন্য থ্রেডকে বিরত রাখতে পারেন।
Example 4: Duration with Thread.sleep()
import java.time.Duration;
public class DurationWithSleepExample {
public static void main(String[] args) throws InterruptedException {
// Define a Duration of 5 seconds
Duration duration = Duration.ofSeconds(5);
System.out.println("Sleeping for " + duration.getSeconds() + " seconds.");
// Sleep for the defined duration
Thread.sleep(duration.toMillis()); // Convert Duration to milliseconds
System.out.println("Woke up after " + duration.getSeconds() + " seconds.");
}
}
Output:
Sleeping for 5 seconds.
Woke up after 5 seconds.
ব্যাখ্যা:
Duration.ofSeconds(5): এটি ৫ সেকেন্ডের জন্য একটিDurationঅবজেক্ট তৈরি করে।Thread.sleep(duration.toMillis()): এটি ৫ সেকেন্ডের জন্য থ্রেডকে বিরত রাখে,toMillis()মেথডটিDurationকে মিলিসেকেন্ডে রূপান্তরিত করে।
java.timeপ্যাকেজটিjava.utilএবংjava.langপ্যাকেজের সাথে ইন্টিগ্রেটেড হয়ে কাজ করতে পারে এবং এই ইন্টিগ্রেশন দ্বারা সঠিক সময় এবং তারিখ সম্পর্কিত কার্যক্রম সম্পাদন করা সম্ভব।java.util.Dateএবংjava.util.Calendarক্লাসের সাথেjava.timeএর ক্লাসগুলোর রূপান্তর করা সহজ এবং কার্যকরী।java.langপ্যাকেজের বিভিন্ন পদ্ধতি যেমনSystem.currentTimeMillis(),Thread.sleep(), ইত্যাদিjava.timeএর সাথে সংযুক্ত হয়ে আরও সঠিকভাবে সময় সম্পর্কিত কার্যক্রম পরিচালনা করতে সহায়ক।
Read more